home *** CD-ROM | disk | FTP | other *** search
/ The Arsenal Files 8 / The Arsenal Files Collection #8 (Arsenal Computer) (1996).ISO / pcboard / iemsi120.zip / IEMSI.PPE (.txt) < prev    next >
PCBoard Programming Language Executable  |  1996-11-10  |  11KB  |  707 lines

  1.     ProcedureDDatePROCEDURE000
  2.  
  3. ;------------------------------------------------------------------------------
  4. ;                                                   .ss.
  5. ;                                                   `²²'
  6. ;             .,sS$Ss,,s$  .,sS$$$Ss.  .,sS$Ss,,s$ .ss.  .sSs.
  7. ;           .d$$²^°²$$$$'.d$P²°^^²$P'.d$$²^°²$$$$'.$$$' .$$$²Sb,.
  8. ;           $$$'   .$$$' $$$²Sçsµ²' .$$$'   .$$$'.$$$' .$$$'  `$$b.
  9. ;           $$$b,,d$$$' ,$$$b,....,s$$$$b,,d$$$'.$$$;.,$$$'    ;$$$
  10. ;           `²S$$S²²S$$S²°²S$$$$S²°°²S$$$$$$',$$S²°²S$S'.sS$$$P²'
  11. ;                                    .sS²°$$$²²°"'       d²°'
  12. ;                                  .$$²  .$$'
  13. ;                                  $$$.,d$$'
  14. ;                                  `²S$$S²'
  15. ;------------------------------------------------------------------------------
  16. ; P.P.L.X. 2.OO                          (C)1996 - Lone Runner / AEGiS CoRP'96 
  17. ;------------------------------------------------------------------------------
  18. ; PPE 3.2O (Encryption type I) - Analysis ON - Postprocessing ON
  19. ;------------------------------------------------------------------------------
  20.  
  21.     Boolean  BOOLEAN001
  22.     Boolean  BOOLEAN002
  23.     Boolean  BOOLEAN003
  24.     Boolean  BOOLEAN004
  25.     Boolean  BOOLEAN005
  26.     Boolean  BOOLEAN006
  27.     Boolean  TBOOLEAN007(4)
  28.     Date     DATE001
  29.     Date     DATE002
  30.     Integer  INTEGER001
  31.     Integer  INTEGER002
  32.     Integer  INTEGER003
  33.     Integer  INTEGER004
  34.     String   STRING002
  35.     String   STRING003
  36.     String   STRING004
  37.     String   STRING005
  38.     String   STRING006
  39.     String   STRING007
  40.     String   STRING008
  41.     String   STRING009
  42.     String   STRING010
  43.     String   STRING011
  44.     String   STRING012
  45.     String   STRING013
  46.     String   STRING014
  47.     String   STRING015
  48.     String   STRING016
  49.     String   STRING017
  50.     String   STRING018
  51.     String   STRING019
  52.     String   STRING020
  53.     String   STRING021
  54.     String   STRING022
  55.     String   STRING023
  56.     String   STRING024
  57.     String   STRING025
  58.     String   STRING026
  59.     String   STRING027
  60.     String   STRING028
  61.     String   STRING029
  62.     String   STRING030
  63.     String   STRING031
  64.     String   STRING032
  65.     String   STRING033
  66.     String   TSTRING034(12)
  67.     String   STRING035
  68.     String   STRING036
  69.     String   STRING037
  70.     String   STRING038
  71.     String   STRING039
  72.     String   STRING040
  73.     String   STRING041
  74.     String   STRING042
  75.     String   STRING043
  76.     String   STRING044
  77.     String   STRING045
  78.     Time     TIME001
  79.     Time     TIME002
  80.     Byte     BYTE001
  81.     Byte     BYTE002
  82.     Byte     BYTE003
  83.     Byte     BYTE004
  84.     Byte     BYTE005
  85.     Byte     BYTE006
  86.     Byte     BYTE007
  87.     Byte     BYTE008
  88.     Byte     BYTE009
  89.     Byte     BYTE010
  90.     Word     WORD003
  91.     Word     WORD004
  92.     Word     WORD005
  93.     SByte    SBYTE001
  94.     SByte    SBYTE002
  95.     BigStr   BIGSTR002
  96.     BigStr   BIGSTR005
  97.     BigStr   BIGSTR006
  98.     BigStr   BIGSTR007
  99.     Declare  Function FUNCTION001(BigStr BIGSTR001) BigStr
  100.     Declare  Function FUNCTION002() BigStr
  101.     Declare  Function FUNCTION003() String
  102.     Declare  Procedure PROC001(Var Byte BYTE011)
  103.     Declare  Procedure PROC002(String STRING048)
  104.     Declare  Procedure PROC003(String STRING049)
  105.     Declare  Procedure PROC004(Byte BYTE012)
  106.  
  107. ;------------------------------------------------------------------------------
  108.  
  109.     Goto LABEL001
  110.     End
  111.  
  112. ;------------------------------------------------------------------------------
  113.  
  114.     Function FUNCTION001(BigStr BIGSTR001) BigStr
  115.  
  116.     Word     WORD001
  117.     Word     WORD002
  118.     String   STRING001
  119.     BigStr   BIGSTR003
  120.     BigStr   BIGSTR004
  121.     ProcedureDDatePROCEDURE001
  122.  
  123.     For WORD001 = 1 To Len(BIGSTR001)
  124.         BIGSTR004 = Right(BIGSTR001, Len(BIGSTR001) - WORD001 + 1)
  125.         WORD002 = InStr(BIGSTR004 + "\", "\") - 1
  126.         BIGSTR003 = BIGSTR003 + Left(BIGSTR004, WORD002)
  127.         WORD001 = WORD001 + WORD002
  128.         If (Mid(BIGSTR001, WORD001 + 1, 1) == "\") Then
  129.             STRING001 = "\"
  130.             Inc WORD001
  131.         Else
  132.             STRING001 = Chr(S2I(Mid(BIGSTR001, WORD001 + 1, 2), 16))
  133.             WORD001 = WORD001 + 2
  134.         Endif
  135.         BIGSTR003 = BIGSTR003 + STRING001
  136.     Next
  137.     BIGSTR003 = ReplaceStr(BIGSTR003, "{{", "{")
  138.     BIGSTR003 = ReplaceStr(BIGSTR003, "}}", "}")
  139.     BIGSTR003 = ReplaceStr(BIGSTR003, "[[", "[")
  140.     BIGSTR003 = ReplaceStr(BIGSTR003, "]]", "]")
  141.     FUNCTION001 = BIGSTR003
  142.  
  143.     EndFunc
  144.  
  145.     :LABEL001
  146.     BYTE006 = 0
  147.     BYTE007 = 1
  148.     BYTE008 = 2
  149.     BYTE009 = 3
  150.     BYTE010 = 4
  151.     GetToken STRING030
  152.     If (STRING030 <> "NO_ADS") Then
  153.         PrintLn "IEMSI AutoLogon v1.20 (C) 1996 and writen by Paul Miller"
  154.         PrintLn "Reality's Edge (517)347-0326, 1:159/330@fidonet.org"
  155.         Newline
  156.     Else
  157.         GetToken STRING030
  158.     Endif
  159.     If (STRING030 == "") STRING030 = "SETTINGS" + LangExt()
  160.     STRING030 = PPEPath() + STRING030
  161.     STRING008 = "IEMSI." + String(PcbNode())
  162.     BYTE004 = 8
  163.     STRING029 = Chr(13)
  164.     STRING004 = STRING029 + "**EMSI_IRQ8E08" + STRING029
  165.     STRING002 = "**EMSI_ACKA490" + STRING029
  166.     STRING003 = "**EMSI_NAKEEC3" + STRING029
  167.     STRING005 = "**EMSI_IIR61E2" + STRING029
  168.     STRING007 = "EMSI_ISI"
  169.     STRING006 = "EMSI_ICI"
  170.     INTEGER003 = S2I("FFFFFFFF", 16)
  171.     BYTE003 = FNext()
  172.     FOpen BYTE003, STRING030, 0, 0
  173.     If (Ferr(BYTE003)) PROC004(100)
  174.     FDefIn BYTE003
  175.     FDGet STRING023
  176.     FDGet STRING024
  177.     FDGet STRING025
  178.     FDGet STRING026
  179.     FDGet STRING027
  180.     FDGet STRING028
  181.     FDGet BYTE005
  182.     FDGet STRING042
  183.     FDGet STRING036
  184.     FDGet STRING037
  185.     FDGet STRING044
  186.     FDGet STRING045
  187.     FClose BYTE003
  188.     STRING022 = "{PCBoard," + String(Ver() / 100) + "." + String(Ver() % 100)
  189.     If (MaxNode() > 1) Then
  190.         STRING022 = STRING022 + "/M " + String(MaxNode()) + "}"
  191.     Else
  192.         STRING022 = STRING022 + "}"
  193.     Endif
  194.     STRING023 = "{" + STRING023 + "}"
  195.     STRING024 = "{" + STRING024 + "}"
  196.     STRING025 = "{" + STRING025 + "}"
  197.     STRING026 = "{" + STRING026 + "}"
  198.     STRING027 = "{" + STRING027 + "}"
  199.     STRING028 = "{" + STRING028 + "}"
  200.     For INTEGER004 = 4 To 0 Step -1
  201.         If (BYTE005 >= 2 ^ INTEGER004) Then
  202.             TBOOLEAN007(INTEGER004) = 1
  203.             BYTE005 = BYTE005 - 2 ^ INTEGER004
  204.         Endif
  205.     Next
  206.     If (OnLocal()) Then
  207.         BOOLEAN004 = 1
  208.         BOOLEAN002 = 1
  209.     Else
  210.         If (TBOOLEAN007(BYTE007)) BOOLEAN005 = CheckRip()
  211.         BOOLEAN004 = AnsiOn()
  212.     Endif
  213.     If (BOOLEAN005) Then
  214.         STRING038 = "RIPscrip"
  215.         STRING039 = "R"
  216.     ElseIf (BOOLEAN004) Then
  217.         STRING038 = STRING036
  218.         STRING039 = "Y"
  219.     Else
  220.         STRING038 = STRING037
  221.         STRING039 = "N"
  222.     Endif
  223.     BOOLEAN006 = 1
  224.     STRING043 = YesChar() + NoChar() + "R,; "
  225.     If (!TBOOLEAN007(BYTE009)) STRING043 = STRING043 + "S"
  226.     If (!TBOOLEAN007(BYTE008)) STRING043 = STRING043 + "Q"
  227.     BYTE002 = 1
  228.     While ((BOOLEAN002 == 0)) PROC001(BYTE002)
  229.     If (BOOLEAN001) Then
  230.         FCreate BYTE003, STRING008, 1, 0
  231.         FDefOut BYTE003
  232.         FDPutLn BIGSTR005
  233.         WORD005 = 0
  234.         BOOLEAN003 = 0
  235.         For INTEGER004 = 1 To Len(BIGSTR005)
  236.             BIGSTR006 = Right(BIGSTR005, Len(BIGSTR005) - INTEGER004 + 1)
  237.             If (BOOLEAN003 == 1) Then
  238.                 WORD004 = InStr(BIGSTR006, "}")
  239.                 If (Mid(BIGSTR006, WORD004 + 1, 1) <> "}") Then
  240.                     TSTRING034(WORD005) = FUNCTION001(STRING033 + Left(BIGSTR006, WORD004 - 1))
  241.                     FDPutLn TSTRING034(WORD005)
  242.                     STRING033 = ""
  243.                     Inc WORD005
  244.                     BOOLEAN003 = 0
  245.                 Else
  246.                     STRING033 = STRING033 + Left(BIGSTR006, WORD004)
  247.                     Inc INTEGER004
  248.                 Endif
  249.             Else
  250.                 WORD004 = InStr(BIGSTR006, "{")
  251.                 BOOLEAN003 = 1
  252.             Endif
  253.             INTEGER004 = INTEGER004 + WORD004 - 1
  254.         Next
  255.         FClose BYTE003
  256.         STRING009 = TSTRING034(0)
  257.         STRING010 = TSTRING034(1)
  258.         STRING011 = TSTRING034(2)
  259.         STRING012 = TSTRING034(3)
  260.         STRING013 = TSTRING034(4)
  261.         STRING014 = TSTRING034(5)
  262.         STRING015 = TSTRING034(6)
  263.         STRING016 = TSTRING034(7)
  264.         STRING017 = TSTRING034(8)
  265.         STRING018 = TSTRING034(9)
  266.         STRING019 = TSTRING034(10)
  267.         STRING020 = TSTRING034(11)
  268.         STRING021 = TSTRING034(12)
  269.         Select Case (Upper(Left(STRING016, InStr(STRING016 + ",", ",") - 1)))
  270.             Case "AVT0"
  271.                 STRING035 = "Y"
  272.             Case "ANSI"
  273.                 STRING035 = "Y"
  274.             Case "VT52"
  275.                 STRING035 = "N"
  276.             Case "VT100"
  277.                 STRING035 = "N"
  278.             Case "TTY"
  279.                 STRING035 = "N"
  280.             Case Else
  281.                 STRING035 = "?"
  282.         End Select
  283.         If (InStr(STRING019, "NEWS") == 0) Then
  284.             STRING035 = STRING035 + ";NS"
  285.         Endif
  286.         If (TBOOLEAN007(BYTE010)) STRING035 = STRING035 + ";Q"
  287.     Else
  288.         If (Exist(STRING008) == 1) Delete STRING008
  289.         MPrint STRING029 + STRING005 + STRING005 + "              " + STRING029
  290.     Endif
  291.     If ((BOOLEAN006 && BOOLEAN001) && (Left(STRING035, 1) <> "?")) Then
  292.         KeyFlush
  293.         KbdStuff STRING035
  294.         Goto LABEL002
  295.     Endif
  296.     If (BOOLEAN006) Then
  297.         If (BOOLEAN001) STRING040 = ""
  298.         Print STRING029 + STRING042 + STRING038 + "? " + STRING040
  299.         While (BOOLEAN006) PROC002(Inkey())
  300.     Endif
  301.     KeyFlush
  302.     KbdStuff STRING041
  303.     :LABEL002
  304.     End
  305.  
  306. ;------------------------------------------------------------------------------
  307.  
  308.     Procedure PROC001(Var Byte BYTE011)
  309.  
  310.     Select Case (BYTE011)
  311.         Case 1
  312.             KeyFlush
  313.             BYTE001 = 0
  314.             DATE002 = Date()
  315.             TIME002 = Time()
  316.             SBYTE002 = TIME002 + 60 - Time() + (Date() - DATE002) * 86400
  317.             Inc BYTE011
  318.         Case 2
  319.             PROC003("Sending EMSI_INQ packet")
  320.             MPrint STRING004
  321.             SPrint STRING029
  322.             Print STRING042 + STRING038 + "? " + STRING040
  323.             Inc BYTE011
  324.         Case 3, 7
  325.             DATE001 = Date()
  326.             TIME001 = Time()
  327.             SBYTE001 = TIME001 + 20 - Time() + (Date() - DATE001) * 86400
  328.             Inc BYTE001
  329.             If (BYTE001 > 3) BOOLEAN002 = 1
  330.             Inc BYTE011
  331.         Case 4
  332.             PROC003("Waiting for EMSI_ICI packet (Try " + String(BYTE001) + ")")
  333.             BIGSTR006 = ""
  334.             While ((BOOLEAN002 == 0) && (BYTE011 == 4)) Do
  335.                 If (STRING032 <> "") Then
  336.                     If (BOOLEAN006) PROC002(STRING032)
  337.                 Endif
  338.                 If (STRING031 <> "") Then
  339.                     If (BOOLEAN006) PROC002(STRING031)
  340.                 Endif
  341.                 STRING032 = KInkey()
  342.                 STRING031 = MInkey()
  343.                 BIGSTR006 = BIGSTR006 + Upper(STRING031)
  344.                 SBYTE001 = TIME001 + 20 - Time() + (Date() - DATE001) * 86400
  345.                 SBYTE002 = TIME002 + 60 - Time() + (Date() - DATE002) * 86400
  346.                 If (((SBYTE002 <= 0) || (InStr(BIGSTR006, STRING005) > 0)) || (STRING032 == Chr(27))) Then
  347.                     PROC003("Client does not support the IEMSI protocol")
  348.                     BOOLEAN002 = 1
  349.                     Continue
  350.                 Endif
  351.                 If (SBYTE001 <= 0) Then
  352.                     BYTE011 = 2
  353.                     Continue
  354.                 Endif
  355.                 If (Right(BIGSTR006, 10) == "**" + STRING006) Then
  356.                     Inc BYTE011
  357.                 Endif
  358.             EndWhile
  359.         Case 5
  360.             PROC003("Receiving EMSI_ICI packet")
  361.             BIGSTR006 = ""
  362.             INTEGER004 = 1
  363.             STRING031 = ""
  364.             While ((INTEGER004 <= 4) && (STRING031 <> STRING029)) Do
  365.                 STRING031 = MInkey()
  366.                 BIGSTR006 = BIGSTR006 + STRING031
  367.                 Inc INTEGER004
  368.             EndWhile
  369.             Push BIGSTR006
  370.             WORD003 = S2I(BIGSTR006, 16)
  371.             BIGSTR005 = ""
  372.             INTEGER004 = 1
  373.             While ((INTEGER004 <= WORD003) && (STRING031 <> STRING029)) Do
  374.                 STRING031 = MInkey()
  375.                 BIGSTR005 = BIGSTR005 + STRING031
  376.                 Inc INTEGER004
  377.             EndWhile
  378.             BIGSTR006 = ""
  379.             INTEGER004 = 1
  380.             While ((INTEGER004 <= 8) && (STRING031 <> STRING029)) Do
  381.                 STRING031 = MInkey()
  382.                 BIGSTR006 = BIGSTR006 + STRING031
  383.                 Inc INTEGER004
  384.             EndWhile
  385.             INTEGER001 = S2I(BIGSTR006, 16)
  386.             Pop BIGSTR006
  387.             BIGSTR006 = BIGSTR006 + BIGSTR005
  388.             If ((InStr(BIGSTR006, STRING005) > 0) || (KInkey() == Chr(27))) Then
  389.                 PROC003("Server or client aborted; inactive")
  390.                 BOOLEAN002 = 1
  391.             Else
  392.                 INTEGER002 = XOr(Crc32(0, STRING006 + BIGSTR006), INTEGER003)
  393.                 If (INTEGER001 == INTEGER002) Then
  394.                     PROC003("EMSI_ICI packet received")
  395.                     MPrint "**" + FUNCTION002() + STRING029
  396.                     Inc BYTE011
  397.                 Else
  398.                     PROC003("EMSI_ICI packet has CRC errors")
  399.                     MPrint STRING003
  400.                     BYTE011 = 3
  401.                 Endif
  402.             Endif
  403.         Case 6
  404.             BYTE001 = 0
  405.             Inc BYTE011
  406.         Case 8
  407.             PROC003("Sending EMSI_ISI packet")
  408.             BIGSTR006 = ""
  409.             While ((BOOLEAN002 == 0) && (BYTE011 == 8)) Do
  410.                 BIGSTR006 = BIGSTR006 + Upper(MInkey())
  411.                 SBYTE001 = TIME001 + 20 - Time() + (Date() - DATE001) * 86400
  412.                 SBYTE002 = TIME002 + 60 - Time() + (Date() - DATE002) * 86400
  413.                 If (((SBYTE002 <= 0) || (InStr(BIGSTR006, STRING005) > 0)) || (KInkey() == Chr(27))) Then
  414.                     BOOLEAN002 = 1
  415.                     Continue
  416.                 Endif
  417.                 If ((SBYTE001 <= 0) || InStr(BIGSTR006, STRING003)) Then
  418.                     PROC003("Got NAK!")
  419.                     MPrint "**" + FUNCTION002() + STRING029
  420.                     BYTE011 = 7
  421.                     Continue
  422.                 Endif
  423.                 If (InStr(BIGSTR006, STRING002)) Then
  424.                     BYTE011 = 9
  425.                 Endif
  426.             EndWhile
  427.         Case 9
  428.             BOOLEAN002 = 1
  429.             BOOLEAN001 = 1
  430.     End Select
  431.  
  432.     EndProc
  433.  
  434.  
  435. ;------------------------------------------------------------------------------
  436.  
  437.     Function FUNCTION002() BigStr
  438.  
  439.     BigStr   BIGSTR008
  440.     String   STRING046
  441.     String   STRING047
  442.  
  443.     BIGSTR008 = STRING022 + STRING023 + STRING024 + STRING025 + "{" + FUNCTION003() + "}" + STRING026 + STRING027 + STRING028
  444.     STRING046 = Right("0000" + I2S(Len(BIGSTR008), 16), 4)
  445.     BIGSTR008 = STRING007 + STRING046 + BIGSTR008
  446.     INTEGER001 = XOr(Crc32(0, BIGSTR008), INTEGER003)
  447.     FUNCTION002 = BIGSTR008 + Right("00000000" + I2S(INTEGER001, 16), 8)
  448.  
  449.     EndFunc
  450.  
  451.  
  452. ;------------------------------------------------------------------------------
  453.  
  454.     Function FUNCTION003() String
  455.  
  456.     Integer  INTEGER005
  457.     Integer  INTEGER006
  458.     Int      INT001
  459.     Int      INT002
  460.     Int      INT003
  461.     DWord    DWORD001
  462.     String   STRING048
  463.  
  464.     INTEGER005 = Time()
  465.     INTEGER006 = Date()
  466.     INT001 = Day(INTEGER006)
  467.     INT002 = Month(INTEGER006)
  468.     INT003 = Year(INTEGER006) - 1968
  469.     If (INT003 % 4 == 0) Then
  470.         Select Case (INT002)
  471.             Case 2
  472.                 INT001 = INT001 + 31
  473.             Case 3
  474.                 INT001 = INT001 + 60
  475.             Case 4
  476.                 INT001 = INT001 + 91
  477.             Case 5
  478.                 INT001 = INT001 + 121
  479.             Case 6
  480.                 INT001 = INT001 + 152
  481.             Case 7
  482.                 INT001 = INT001 + 182
  483.             Case 8
  484.                 INT001 = INT001 + 213
  485.             Case 9
  486.                 INT001 = INT001 + 244
  487.             Case 10
  488.                 INT001 = INT001 + 274
  489.             Case 11
  490.                 INT001 = INT001 + 305
  491.             Case 12
  492.                 INT001 = INT001 + 335
  493.         End Select
  494.     Else
  495.         Select Case (INT002)
  496.             Case 2
  497.                 INT001 = INT001 + 31
  498.             Case 3
  499.                 INT001 = INT001 + 59
  500.             Case 4
  501.                 INT001 = INT001 + 90
  502.             Case 5
  503.                 INT001 = INT001 + 120
  504.             Case 6
  505.                 INT001 = INT001 + 151
  506.             Case 7
  507.                 INT001 = INT001 + 181
  508.             Case 8
  509.                 INT001 = INT001 + 212
  510.             Case 9
  511.                 INT001 = INT001 + 243
  512.             Case 10
  513.                 INT001 = INT001 + 273
  514.             Case 11
  515.                 INT001 = INT001 + 304
  516.             Case 12
  517.                 INT001 = INT001 + 334
  518.             Endif
  519.     End Select
  520.     DWORD001 = INT001 * 86400 + ((INT003 - 2) * 365) * 86400 + (INT003 / 4) * 86400 + INTEGER005
  521.     FUNCTION003 = Right("00000000" + I2S(DWORD001, 16), 8)
  522.  
  523.     EndFunc
  524.  
  525.  
  526. ;------------------------------------------------------------------------------
  527.  
  528.     Procedure PROC002(String STRING048)
  529.  
  530.     If ((STRING048 == Chr(8)) && (Len(STRING040) > 0)) Then
  531.         Print Chr(8), " ", Chr(8)
  532.         STRING040 = Left(STRING040, Len(STRING040) - 1)
  533.     ElseIf (STRING048 == STRING029) Then
  534.         Newlines 2
  535.         BOOLEAN002 = 1
  536.         BOOLEAN006 = 0
  537.         STRING041 = STRING039 + ";"
  538.         STRING040 = Upper(STRING040)
  539.         If (InStr(STRING040, "NS")) Then
  540.             STRING040 = StripStr(STRING040, "NS")
  541.             STRING041 = STRING041 + "NS;"
  542.             PrintLn STRING044
  543.         Endif
  544.         If (InStr(STRING040, "Q")) Then
  545.             STRING041 = STRING041 + "Q;"
  546.             PrintLn STRING045
  547.         Endif
  548.         If (InStr(STRING040, NoChar())) STRING041 = STRING041 + NoChar() + ";"
  549.         If (InStr(STRING040, YesChar())) STRING041 = STRING041 + YesChar() + ";"
  550.         If (InStr(STRING040, "R")) STRING041 = STRING041 + "R;"
  551.     Else
  552.         If ((Upper(STRING048) == "H") || (STRING048 == "?")) Then
  553.             StartDisp 1
  554.             Print STRING029
  555.             DispFile PPEPath() + "HELP", 4
  556.             Print STRING042 + STRING038 + "? " + STRING040
  557.             StartDisp 2
  558.         ElseIf (Len(STRING040) <= BYTE004) Then
  559.             If (InStr(STRING043, Upper(STRING048))) Then
  560.                 Print STRING048
  561.                 STRING040 = STRING040 + STRING048
  562.             Endif
  563.         Endif
  564.     Endif
  565.  
  566.     EndProc
  567.  
  568.  
  569. ;------------------------------------------------------------------------------
  570.  
  571.     Procedure PROC003(String STRING049)
  572.  
  573.     If (TBOOLEAN007(BYTE006) == 1) Then
  574.         SPrint "sH┌──────────────────────────────────────────────────────────────────────────────┐"
  575.         SPrint "│ IEMSI Transmission Status:  " + Left(STRING049, 48) + " │"
  576.         SPrint "└──────────────────────────────────────────────────────────────────────────────┘u"
  577.     Endif
  578.  
  579.     EndProc
  580.  
  581.  
  582. ;------------------------------------------------------------------------------
  583.  
  584.     Procedure PROC004(Byte BYTE012)
  585.  
  586.     FreshLine
  587.     Newline
  588.     PrintLn "@X0CExiting due to critical error #", BYTE012
  589.     Stop
  590.  
  591.     EndProc
  592.  
  593.  
  594. ;------------------------------------------------------------------------------
  595. ;
  596. ; Usage report (before postprocessing)
  597. ;
  598. ; ■ Statements used :
  599. ;
  600. ;    2       End
  601. ;    138     Goto 
  602. ;    187     Let 
  603. ;    6       Print 
  604. ;    5       PrintLn 
  605. ;    91      If 
  606. ;    1       DispFile 
  607. ;    1       FCreate 
  608. ;    1       FOpen 
  609. ;    2       FClose 
  610. ;    2       StartDisp 
  611. ;    1       Delete 
  612. ;    13      Inc 
  613. ;    2       Newline
  614. ;    1       Newlines 
  615. ;    2       GetToken 
  616. ;    1       Stop
  617. ;    1       Push 
  618. ;    1       Pop 
  619. ;    2       KbdStuff 
  620. ;    1       FreshLine
  621. ;    4       SPrint 
  622. ;    5       MPrint 
  623. ;    1       FDefIn 
  624. ;    1       FDefOut 
  625. ;    12      FDGet 
  626. ;    2       FDPutLn 
  627. ;    3       KeyFlush
  628. ;    4       EndProc
  629. ;    3       EndFunc
  630. ;
  631. ;
  632. ; ■ Functions used :
  633. ;
  634. ;    3       -
  635. ;    2       ^
  636. ;    10      *
  637. ;    2       /
  638. ;    2       %
  639. ;    146     +
  640. ;    26      -
  641. ;    57      ==
  642. ;    8       <>
  643. ;    3       <
  644. ;    11      <=
  645. ;    6       >
  646. ;    7       >=
  647. ;    77      !
  648. ;    14      &&
  649. ;    11      ||
  650. ;    10      Len(
  651. ;    10      Upper()
  652. ;    3       Mid()
  653. ;    11      Left()
  654. ;    6       Right()
  655. ;    1       Ferr()
  656. ;    8       Chr()
  657. ;    20      InStr()
  658. ;    9       Date()
  659. ;    9       Time()
  660. ;    1       Year()
  661. ;    1       Month()
  662. ;    1       Day()
  663. ;    2       Ver()
  664. ;    3       NoChar()
  665. ;    3       YesChar()
  666. ;    1       Inkey()
  667. ;    5       String()
  668. ;    2       PPEPath()
  669. ;    1       PcbNode()
  670. ;    1       OnLocal()
  671. ;    1       Exist()
  672. ;    3       I2S()
  673. ;    4       S2I()
  674. ;    1       LangExt()
  675. ;    1       AnsiOn()
  676. ;    2       XOr()
  677. ;    3       KInkey()
  678. ;    5       MInkey()
  679. ;    2       MaxNode()
  680. ;    4       ReplaceStr()
  681. ;    1       StripStr()
  682. ;    2       Crc32()
  683. ;    1       FNext()
  684. ;    1       CheckRip()
  685. ;
  686. ;------------------------------------------------------------------------------
  687. ;
  688. ; Analysis flags : M
  689. ;
  690. ; M - Send text to modem only ■ 4
  691. ;     Some informations are sent only to the modem, not to the local
  692. ;     screen, this is a well known way to make stealth backdoors, Check!
  693. ;     ■ Search for : SENDMODEM, MPRINT, MPRINTLN
  694. ;
  695. ;------------------------------------------------------------------------------
  696. ;
  697. ; Postprocessing report
  698. ;
  699. ;    3       For/Next
  700. ;    5       While/EndWhile
  701. ;    32      If/Then or If/Then/Else
  702. ;    4       Select Case
  703. ;
  704. ;------------------------------------------------------------------------------
  705. ;                 AEGiS Corp - Break the routines, code against the machines!
  706. ;------------------------------------------------------------------------------
  707.